/* 
 * Copyright (c) 2016, S.F. Express Inc. All rights reserved.
 */
package com.gutai.admin.common.util;

import java.io.PrintWriter;
import java.io.StringWriter;

import org.apache.commons.lang3.StringUtils;

/**
 * 描述：异常工具类
 * 
 * <pre>
 * HISTORY
 * ****************************************************************************
 *  ID   DATE           PERSON          REASON
 *  1    2016年1月6日      568677         Create
 * ****************************************************************************
 * </pre>
 * 
 * @author zhangYao 568677
 * @since 1.0
 */
public class ExceptionUtils {
    private ExceptionUtils(){}
    /**
     * 将堆栈转化成字符串
     * 
     * @param throwable
     *            异常对象
     * @return 异常信息字符串
     * @author zhangYao 568677
     * @date 2016年1月6日
     */
    public static String extractStackTrace(Throwable throwable) {
        StringWriter me = new StringWriter();
        PrintWriter pw = new PrintWriter(me);
        throwable.printStackTrace(pw);
        pw.flush();
        return me.toString();
    }

    /**
     * 将堆栈转化成字符串
     * 
     * @param throwable
     *            异常对象
     * @param length
     *            截取异常字符串的长度
     * @return 异常信息字符串
     * @author zhangYao 568677
     * @date 2016年1月6日
     */
    public static String extractStackTrace(Throwable throwable, int length) {
        StringWriter me = new StringWriter();
        PrintWriter pw = new PrintWriter(me);
        throwable.printStackTrace(pw);
        pw.flush();
        String errorInfo = me.toString();
        return StringUtils.isNotEmpty(errorInfo) && errorInfo.length() > length ? errorInfo.substring(0, length) : errorInfo;
    }
}
